package cn.tedu.work;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.util.Scanner;

//模拟工作队列模式的生产者
public class WorkProducer {
    public static void main(String[] args) throws Exception{
        //1.通过连接工厂配置rabbitmq的连接信息
        ConnectionFactory cf = new ConnectionFactory();
        cf.setHost("127.0.0.1");
        cf.setPort(5672); //客户端端口，5672是默认端口，可以省略
        cf.setUsername("guest");
        cf.setPassword("guest");
        //2.创建tcp和channel
        Connection nc = cf.newConnection();
        Channel cc = nc.createChannel();
        //3.创建队列
        /*
          第一个参数：队列名称
          第二个参数：队列是否持久化
          第三个参数：队列是否单独
          第四个参数：队列是否自动删除
          第五个参数：其他属性的设置
         */
        cc.queueDeclare("helloworld",true,false,false,null);
        //4.准备数据并发发送到指定队列
        //循环发送消息
        while(true){
            //在控制台中输入消息数据
            System.out.print("输入消息数据:");
            String msg = new Scanner(System.in).next();
            //设置一个退出循环的条件
            if (msg.equals("quit"))
                break;
            cc.basicPublish("","helloworld", MessageProperties.PERSISTENT_TEXT_PLAIN,msg.getBytes());
        }
        nc.close();
    }
}
